"""
统计信息API模块
提供系统统计数据的RESTful接口
"""

from flask import Blueprint, jsonify, current_app
from flask_restful import Api, Resource
from app.services.civil_code_service import CivilCodeService

# 创建蓝图
statistics_bp = Blueprint('statistics', __name__)
api = Api(statistics_bp)

class StatisticsResource(Resource):
    """统计信息资源"""
    
    def __init__(self):
        self.service = CivilCodeService()
    
    def get(self):
        """
        获取系统统计信息
        ---
        tags:
          - Statistics
        summary: 获取系统统计信息
        description: 获取系统的各项统计数据，包括法条总数、收藏数、搜索数等
        responses:
          200:
            description: 获取统计信息成功
            schema:
              type: object
              properties:
                success:
                  type: boolean
                  example: true
                data:
                  type: object
                  properties:
                    total_articles:
                      type: integer
                      description: 法条总数
                      example: 1260
                    total_favorites:
                      type: integer
                      description: 收藏总数
                      example: 156
                    total_searches:
                      type: integer
                      description: 搜索总数
                      example: 2341
                    articles_by_part:
                      type: object
                      description: 按编统计的法条数量
                      example: {"总则": 204, "物权": 258}
                    last_updated:
                      type: string
                      description: 最后更新时间
                      example: "2025-09-20T09:37:31.123456"
                message:
                  type: string
                  example: "获取统计信息成功"
          500:
            description: 服务器内部错误
            schema:
              type: object
              properties:
                success:
                  type: boolean
                  example: false
                error:
                  type: object
                  properties:
                    code:
                      type: string
                      example: "STATISTICS_ERROR"
                    message:
                      type: string
                      example: "获取统计信息失败"
        """
        try:
            current_app.logger.info("开始获取统计信息")
            
            # 获取统计数据
            stats = self.service.get_statistics()
            
            if not stats:
                current_app.logger.warning("统计信息为空")
                return {
                    'success': False,
                    'error': {
                        'code': 'STATISTICS_EMPTY',
                        'message': '统计信息为空',
                        'details': '可能是数据库连接问题'
                    }
                }, 500
            
            current_app.logger.info(f"获取统计信息成功: {stats}")
            
            return {
                'success': True,
                'data': stats,
                'message': '获取统计信息成功'
            }, 200
            
        except Exception as e:
            current_app.logger.error(f"获取统计信息失败: {str(e)}")
            return {
                'success': False,
                'error': {
                    'code': 'STATISTICS_ERROR',
                    'message': '获取统计信息失败',
                    'details': str(e)
                }
            }, 500

# 注册路由
api.add_resource(StatisticsResource, '/statistics')
